package com.example.shixi.util;

import lombok.Data;

/**
 * @desc 统一返回结果集
 * @author wujiangbo
 * @date 2022/5/13 14:32
 */
//@Data
public class JSONResult {
    //接口状态（true：成功；false：失败）
    private Boolean success = true;

    //成功统一返回0000，其余编码全部是错误码
    private String code = "0000";

    //返回前端的提示信息（成功）
    private String message = "成功";

    //没有指定错误码时，统一返回这个错误码
    private static String errorCode = "9999";

    //返回前端的提示信息（失败）
    private static String errorMessage = "失败";

    //存储返回给前端的数据
    private Object data;

    //创建当前实例（成功）
    public static JSONResult success(){
        return new JSONResult();
    }

    public Boolean getSuccess() {
        return success;
    }

    public void setSuccess(Boolean success) {
        this.success = success;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public static String getErrorCode() {
        return errorCode;
    }

    public static void setErrorCode(String errorCode) {
        JSONResult.errorCode = errorCode;
    }

    public static String getErrorMessage() {
        return errorMessage;
    }

    public static void setErrorMessage(String errorMessage) {
        JSONResult.errorMessage = errorMessage;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    //创建当前实例（成功），并设置数据返回
    public static JSONResult success(Object obj){
        JSONResult instance = new JSONResult();
        instance.setData(obj);
        return instance;
    }

    //创建当前实例（成功），并设置数据和状态码返回
    public static JSONResult success(Object obj, String code){
        JSONResult instance = new JSONResult();
        instance.setCode(code);
        instance.setData(obj);
        return instance;
    }

    //创建当前实例（失败）
    public static JSONResult error(){
        JSONResult instance = new JSONResult();
        instance.setCode(errorCode);
        instance.setSuccess(false);
        instance.setMessage(errorMessage);
        return instance;
    }

    //创建当前实例（失败）
    public static JSONResult error(String code, String message){
        JSONResult instance = new JSONResult();
        instance.setCode(code);
        instance.setSuccess(false);
        instance.setMessage(message);
        return instance;
    }

    //创建当前实例（失败），并返回指定错误信息
    public static JSONResult error(String message){
        JSONResult instance = new JSONResult();
        instance.setCode(errorCode);
        instance.setSuccess(false);
        instance.setMessage(message);
        return instance;
    }

    //创建当前实例（失败），并返回指定错误信息和数据
    public static JSONResult error(String message, Object obj){
        JSONResult instance = new JSONResult();
        instance.setCode(errorCode);
        instance.setSuccess(false);
        instance.setMessage(message);
        instance.setData(obj);
        return instance;
    }
}